Method and system for customizing a project

ABSTRACT

A method, system, and computer readable media for managing a project over a computer network is disclosed. A project selection is received. Data associated with the project is retrieved in response to the selection. Data associated with a user profile is also retrieved, and compared to the data associated with the project to detect inconsistencies between the project and the user profile. In an embodiment, substitutions are determined based on the inconsistencies and automatically incorporated into the project. Data associated with the project including the substitutions is then delivered to the user over a computer network. In another embodiment, data associated with the project and the inconsistencies is delivered to the user over a computer network. In some embodiments, data associated with alternative project inputs and/or project actions consistent with the user profile is delivered to the user for substitution into the project. In some implementations, a selection of one or more alternative project inputs and/or project actions may be received from the user over a computer network.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S.Utility application Ser. No. 13/651,260, filed Oct. 12, 2012, whichclaims priority under 35 U.S.C. Section 119(e) to U.S. ProvisionalApplication 61/547,309, filed on Oct. 14, 2011. The foregoingapplications are hereby incorporated by reference in their entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to project management over a computernetwork.

2. Description of the Related Art

Use of computers to assist with food preparation gained popularity inthe late 1980's. Early generations of this product category may have runon the Microsoft Windows 3.1 operating system, making use of the popularIBM Compatible PC platform. These applications may have included aprimitive database of recipes, and allowed users to enter and storetheir own set of recipes for later retrieval. Generally, theseapplications provided digitized access to recipe information previouslystored in a paper based form, for example, in books and magazines.

As the internet gained popularity, these applications migrated to awebsite form, but provided much of the same recipe based functionality.Web 2.0 added the ability for users to share their favorite recipes withother users over the internet, and to provide feedback on the recipesprovided by a particular web site. Many web sites also added questionand answer forums that enabled users to get specialized help with theirindividual recipe preparation challenges.

However, the ability of these applications to assist users with foodpreparation in a way that truly reduces the user's workload and enablesprofessional meal preparation by individuals has always been limited.These limitations stem from the current generation of application'sfailure to recognize several aspects of the food preparation challengesfaced by the average individual.

SUMMARY OF THE INVENTION

This patent application describes methods, systems, and computerreadable media designed to solve many of the problems associated withthe current generation of applications described above. By recognizingthat food preparation frequently includes not only a single recipe, butan entire meal, the next generation of food preparation applicationshave the potential to significantly increase the assistance provided tomodern food preparers, resulting in a more enjoyable food preparationexperience, increased quality of the prepared food, and a lower totalcost.

In addition to the methods, a computer-implemented system for performinga method according to various embodiments of the invention is alsoprovided. The system, also referred to as an apparatus, includes a webserver connected to a network, for example, the Internet. The web serverfurther comprises a database and an application for providing aninterface and performing the methods according to an embodiment of theinvention. Methods according to the present invention may be performedby software residing on the web server, or on other servers on thenetwork that are accessible to the web server. The web server maycontain web pages and other information transmitted to the network inresponse to a request received from the network. The system may alsoinclude one or more secondary web servers connected to the network.

In addition, a computer readable media including instructions operativeto configure a processor to perform the methods is also disclosed. Thiscomputer readable media may be included as part of a web server, or maybe accessible by the web server. The computer readable media may beaccessed by one or more web application programs running on one or moreweb servers that load and execute the instructions stored on thecomputer readable media. These instructions then cause the web server toperform aspects of the methods.

Another aspect disclosed is a computer implemented method of managing aproject. The method includes receiving a project selection based atleast in part on input received from a user over a computer network,retrieving data associated with an initial project execution plancorresponding to the selected project comprising project inputs and/orproject actions from a digital electronic memory in response to theselection, retrieving data associated with a user profile from a digitalelectronic memory; comparing, in a digital electronic processor, thedata associated with project inputs and/or project actions with the dataassociated with the user profile to detect inconsistencies between oneor more project inputs and/or project actions and the user profile, andidentifying, in a digital electronic processor, one or more alternativeproject inputs and/or project actions that reduce the detectedinconsistencies, generating, with a digital electronic processor, amodified project execution plan incorporating the one or morealternative project inputs and/or project actions; and, delivering themodified project execution plan to the user over a computer network.

Another aspect disclosed is an apparatus for managing a project. Theapparatus includes a processor and a memory operably connected to theprocessor. The memory stores instructions defining an execution plangenerator, configured to receive a project selection based at least inpart on input received from a user over a computer network, aconsistency checker, configured to retrieve data associated with projectinputs and/or project actions in response to the selection, and retrievedata associated with a user profile, and compare the data associatedwith project inputs and/or project actions with the data associated withthe user profile to detect inconsistencies between one or more projectinputs and/or project actions and the user profile.

Another aspect disclosed is an apparatus for managing a project. Theapparatus includes means for receiving a project selection based atleast in part on input received from a user over a computer network,means for retrieving data associated with project inputs and/or projectactions in response to the selection, means for retrieving dataassociated with a user profile, means for comparing the data associatedwith project inputs and/or project actions with the data associated withthe user profile to detect inconsistencies between one or more projectinputs and/or project actions and the user profile, and means foridentifying one or more alternative project inputs and/or projectactions that reduce the detected inconsistencies, means for generating amodified project execution plan incorporating the one or morealternative project inputs and/or project actions; and, means fordelivering the modified project execution plan to the user over acomputer network.

A non-transitory, computer readable medium comprising instructions thatwhen executed cause a processor to perform a method of managing aproject. The method includes receiving a project selection based atleast in part on input received from a user over a computer network,retrieving data associated with project inputs and/or project actions inresponse to the selection, retrieving data associated with a userprofile; comparing the data associated with project inputs and/orproject actions with the data associated with the user profile to detectinconsistencies between one or more project inputs and/or projectactions and the user profile, identifying, in a digital electronicprocessor, one or more alternative project inputs and/or project actionsthat reduce the detected inconsistencies, generating, with a digitalelectronic processor, a modified project execution plan incorporatingthe one or more alternative project inputs and/or project actions, and,delivering the modified project execution plan to the user over acomputer network.

Another innovative aspect is a method of preparing a meal. The methodincludes sending information over a computer network to a data storedefining one or more of food preferences; dietary restrictions; cookingtools available; food ingredients available; and cooking skill level.The method further includes sending a recipe selection over a computernetwork, wherein the selected recipe contains one or more ingredients oractions that are inconsistent with at least one of the food preferences;dietary restrictions; cooking tools available; food ingredientsavailable; and cooking skill level information previously sent,receiving, over a computer network, a recipe execution plan for theselected recipe containing substitutions for one or more ingredients oractions that reduce or eliminate the inconsistencies.

In some embodiments, the method may also include receiving informationover a computer network associated with inconsistencies between theselected recipe and at least one of the food preferences; dietaryrestrictions; cooking tools available; food ingredients available; andcooking skill level information previously sent; and, selecting asubstitution in response to the receiving.

A more complete understanding of the method, system, and computerreadable media for meal organization and scheduling using a computernetwork will be afforded to those skilled in the art, as well as arealization of additional advantages and objects thereof, by aconsideration of the following detailed description of the preferredembodiment. Reference will be made to the appended sheets of drawingswhich will first be described briefly.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a system for delivering a webapplication over a network according to the present invention.

FIG. 2 is a simplified block diagram illustrating the internal softwarearchitecture of one embodiment of a web server 170.

FIG. 3 is a block diagram of an apparatus for managing and schedulingmeal preparation.

FIG. 4A shows one embodiment of a user interface for editing a userprofile.

FIG. 4B shows one embodiment of a user interface for editing a userprofile.

FIG. 4C shows an embodiment of a user interface for editing a userprofile.

FIG. 5A shows an embodiment of a user interface for displaying mealsuggestions.

FIG. 5B shows an embodiment of a user interface for displaying mealsuggestions.

FIG. 5C shows an embodiment of a user interface for creating a meal.

FIG. 6 is a block diagram of a recipe execution plan generator 370.

FIG. 7 shows a flowchart of a method for preparing a meal.

FIG. 8 is an embodiment of a user interface for a meal overview.

FIG. 9 is a block diagram of an apparatus for managing and schedulingmeal preparation.

FIG. 10 is a block diagram of one embodiment of a recipe execution plangenerator 970, as illustrated in FIG. 9.

FIG. 11 shows one embodiment of a user interface for a meal overviewpage.

FIG. 12 is a flowchart of one implementation of a method for managing arecipe over a computer network.

FIG. 13 is a block diagram of an apparatus for managing and schedulingmeal preparation.

FIG. 14 is a block diagram of one embodiment of a recipe execution plangenerator.

FIG. 15 is a flowchart of one implementation of a method for managing arecipe over a computer network.

DETAILED DESCRIPTION

The methods and systems disclosed herein satisfy the need for a method,apparatus, and computer readable media for managing a project. In someaspects, inconsistencies between project inputs and actions andcharacteristics of a user stored in a user profile may be detected.Alternative project inputs and actions may also be determined, anddelivered to the user. A selection of one or more alternative inputs andactions may be received, and the project may be customized based on theone or more selected alternatives.

In one especially advantageous implementation, the methods and systemsdisclosed also satisfy the need for a method, system, and computerreadable media for organizing and scheduling food preparation of a mealover a computer network, and overcome the limitations of prior artrecipe based applications. In general, the disclosed methods and systemsdescribed herein assist individuals or groups more efficiently manage asingular task (such as cooking, shopping, or the like), that consist ofmultiple activities. The activities may be combined and arranged into alinear format. This linear format may provide efficiencies in taskexecution when compared to performing these activities as individualsiloed tasks. In the detailed description that follows, like elementnumerals are used to describe like elements illustrated in one or morefigures. Various terms and acronyms are used throughout the detaileddescription, including at least some of the following:

Application: Within the context of computer hardware and software, anapplication is a set of one or more computer programs that performs afunction when executed within a computer hardware device. If the set iscomprised of plural programs, the programs are coordinated to perform afunction together; such programs may also perform other functionsindividually. Similarly, a program may be comprised of plural modulesthat perform certain functions individually and other functions whencombined in various ways.

Client-Server: A model of interaction in a distributed system in which aprogram at one site sends a request to a program at another site andwaits for a response. The requesting program is called the “client,” andthe program which responds to the request is called the “server.” In thecontext of the World Wide Web (discussed below), the client is a “Webbrowser” (or simply “browser”) which runs on a computer of a user. Theprogram which responds to browser requests by serving Web pages iscommonly referred to as a “Web server.”

Cookies: A technology that enables a Web server to retrieve informationfrom a user's computer that reveals prior browsing activities of theuser. The information item is stored on the user's computer (typicallyon the hard drive) is commonly referred to as a “cookie.” Many standardWeb browsers support the use of cookies.

Distributable application: An application coded in a language, such asthe JAVA language developed by Sun Microsystems, Inc. and currentlyowned by Oracle, Inc., such that the application may be distributed overa network, such as the Internet, and be successfully executed on avariety of computer hardware models running various operating systems.

Hyperlink: A navigational link from one document to another, or from oneportion (or component) of a document to another. Typically, a hyperlinkis displayed as a highlighted word or phrase that can be selected byclicking on it using a mouse or other pointing device to jump to theassociated document or documented portion.

Hypertext System: A computer-based informational system in whichdocuments other types of computer files are linked together viahyperlinks forming a user-navigable “web.”

Information Exchange Group: A general term encompassing a particular setof protocols or rules for information sharing, together with aparticular set of shared information or data collected or generatedunder the associated rules and protocols, and the users (or othersources) contributing information to, or accessing information in, theshared set of information. As implemented on the Web, informationexchange groups include newsgroups, bulletin boards, message boards,chat rooms, and “Webrooms.” Webrooms are further described in thedetailed description below, and in the co-pending application referencedtherein.

Internet: A collection of interconnected (public and/or private)networks that are linked together by a set of standard protocols (suchas TCP/IP and HTTP) to form a global, distributed network. (While thisterm is intended to refer to what is now commonly known as the Internet,it is also intended to encompass variations which may be made in thefuture, including changes and additions to existing standard protocols.)

World Wide Web (‘Web”): Used herein to refer generally to both (i) adistributed collection of interlinked, user-viewable Web pages and otherlinked data and distributable applications that are accessible via theInternet, and (ii) the client and server software components whichprovide user access to such documents using standardized Internetprotocols. Currently, the primary standard protocol for allowingapplications to locate and acquire Web documents is HTTP, and the Webpages are encoded using HTML. However, the terms “Web” and “World WideWeb” are intended to encompass future markup languages and transportprotocols which may be used in place of (or in addition to) HTML andHTTP.

Web Page: A hypertext file or document that is encoded using a languagesuch as HTML for viewing on a client computer using a browserapplication. A Web page may include visible components, such as text,images, hyperlinks, and a background, and/or invisible components, suchas meta tags and formatting instructions. In comparison to the term “Webpage,” the more general term “page” encompasses many other types ofcomputer files that are not necessarily encoded for viewing using abrowser, e.g., text files, bit-maps, audio files, and so forth.

Web Site: A computer system that serves informational content over anetwork using the standard protocols of the World Wide Web. Typically, aWeb site corresponds to a particular Internet domain name, such as“electronsearch.com,” and includes the content associated with aparticular organization. As used herein, the term is generally intendedto encompass both (i) the hardware/software server components that servethe informational content over the network, and (ii) the “back end”hardware/software components, including any non-standard or specializedcomponents, that interact with the server components to perform servicesfor Web site users.

HTML (HyperText Markup Language): A standard coding convention and setof codes for attaching presentation and linking attributes toinformational content within documents. (HTML 2.0 is currently theprimary standard used for generating Web documents, although it shouldbe appreciated that other coding conventions could be used within thescope of the present invention.) During a document authoring stage, theHTML codes (referred to as “tags”) are embedded within the informationalcontent of the document. When the Web document (or HTML document) issubsequently transferred from a Web server to a browser, the codes areinterpreted by the browser and used to parse and display the document.Additionally, in specifying how the Web browser is to display thedocument, HTML tags can be used to create links to other Web documents(commonly referred to as “hyperlinks”).

HTTP (HyperText Transport Protocol): The standard World Wide Webclient-server protocol used for the exchange of information (such asHTML documents, and client requests for such documents) between abrowser and a Web server. HTTP includes a number of different types ofmessages that can be sent from the client to the server to requestdifferent types of server actions. For example, a ‘GET’ message, whichhas the format GET <URL>, causes the server to return the document orfile located at the specified URL.

URL (Uniform Resource Locator): A unique address which fully specifiesthe location of a file or other resource on the Internet. The generalformat of a URL is protocol://machine address:port/path/filename. Theport specification is optional, and if no port-is specified, the browserdefaults to the standard port for whatever service is specified as theprotocol.

The foregoing definitions are not intended to limit the scope of thepresent invention, but rather are intended to clarify terms that arewell understood by persons having ordinary skill in the art. It shouldbe appreciated that the defined terms may also have other meanings tosuch persons having ordinary skill in the art. These and other terms areused in the detailed description below.

In the following description, specific details are given to provide athorough understanding of the examples. However, it will be understoodby one of ordinary skill in the art that the examples may be practicedwithout these specific details. For example, electricalcomponents/devices may be shown in block diagrams in order not toobscure the examples in unnecessary detail. The functionality ofdifferent blocks can be moved, combined, or re-arranged, as thedifferent blocks are present for illustrative purposes only. In otherinstances, such components, other structures and techniques may be shownin detail to further explain the examples.

It is also noted that the examples may be described as a process, whichis depicted as a flowchart, a flow diagram, a finite state diagram, astructure diagram, or a block diagram. Although a flowchart may describethe operations as a sequential process, many of the operations can beperformed in parallel, or concurrently, and the process can be repeated.In addition, the order of the operations may be re-arranged. A processis terminated when its operations are completed. A process maycorrespond to a method, a function, a procedure, a subroutine, asubprogram, etc. When a process corresponds to a software function, itstermination corresponds to a return of the function to the callingfunction or the main function.

Previous generations of applications have failed to assist users withorganizing and planning an entire meal because of their general focus onindividual recipes. Organizing an entire meal introduces severalcomplexities that are missed by focusing only on individual recipes.

For example, when focusing on individual recipes, traditionalapplications fail to aggregate all of the ingredients necessary for anentire meal into one integrated list or display. These applications alsofail to assist users with the scheduling challenges associated withpreparing several items at the same time. For example, two items plannedfor the same meal may both require use of a single oven at the sametime, with incompatible temperature profiles. Traditional applicationsalso fail to recognize that meal preparation may not be performed solelyby a single individual, but instead is frequently a communal event. Forexample, several members of the same household may assist in preparingthe meal. Guests at a meal may also prepare items at an alternatelocation and then transport their prepared items to the meal venue at anappropriate time.

Previous generations of applications further fail to assist mealpreparers with the selection of items for a meal based on therequirements and preferences of those attending or consuming the meal.For example, a meal including chicken broth may be inappropriate toserve to a vegetarian guest. Even more troublesome, a meal includingpeanut derivatives may be catastrophic to serve to a guest with strongpeanut allergies.

Furthermore, previous generations of applications also fail to assistusers with the complexities of ensuring adequate kitchen supplies areavailable to successfully prepare an entire meal. For example, two itemsplanned for a meal may both require a dutch oven, when the foodpreparation venue has only one dutch oven available.

Referring to FIG. 1, a block diagram is illustrated of a networkemploying a method and system according to the invention. It isanticipated that the present web application system 100 operates with aplurality of computers which are coupled together on a network, such asthe Internet 150, or other communications network. FIG. 1 depicts anetwork that includes user computers 110, 120, 130, and 140 thatcommunicate with one or more web servers 170 though communication linksthat include the Internet 150. The user computers 110, 120, 130, and 140may be any type of computing device that allows a user to interactivelybrowse websites, such as a personal computer (PC) that includes a webbrowser (e.g., Microsoft Internet Explorer™ or Google Chrome™). Suitableuser computers equipped with browsers are available in manyconfigurations, including handheld devices 140 (e.g., Apple iPhone™,Google Android, or RIM Blackberry), personal computers (PC), laptopcomputers 110, workstations 120, television set-top devices, tablets(130) and so forth.

The one or more web servers 170 may be optionally managed by a loadbalancer 160. Load balancer 160 may receive requests from computernetwork 150 and route these requests to one or more web servers 170based on a variety of criteria. These criteria may optionally includethe current load of each web server 170, session information included inthe network request, a round robin counter maintained by load balancer160, or other criteria.

One or more web servers may also communicate with one or more databases180. These databases may be in a mirrored or striped configuration tosupport the data storage requirements of web applications running on webserver(s) 170.

The web server(s) 170 includes a server computer running a web interfaceapplication and capable of selectively delivering data files, such asHTML files, to the user computers using a protocol such as HTTP. Webserver 170 may also dynamically generate content for delivery to usercomputers in response to a request from a user computer. The content maybe generated by web server 170 directly, or may be generated by othercomputers linked to web server 170 in response to a request from webserver 170. Web server 170 may then forward the requested content to auser computer over network 150.

In addition to exposing a user interface capable of being viewed on abrowser as described above, web server 170 may also expose a webservices interface on network 150. The web services interface may usethe SOAP protocol to provide the web services or any other protocolknown in the art. Such interfaces may provide an ability for othernetwork based programs to interface with the meal organization andscheduling methods provided by web server 170 in one aspect of thepresent invention.

Web server applications may be coded in various programming languages,such as Java, Perl, C#, C, or C++, and are customized to run on theirrespective servers 170. Web servers 170 may also include applicationsutilizing a variety of specialized application languages such asMicrosoft Silverlight™, or Adobe Flash™ to implement user interfacesdisplayed on the user computers. These specialized applications may beintegrated with files or dynamic content provided by Web server 170 tothe user computers in response to a request from those user computers.

Web server applications, such as those running on web server 170, alsotypically interface with a database application, such as a SQL Server™engine from Microsoft Corporation, Oracle™ database engine, or MySQL aspart of their architecture. These database applications may control ormanage database servers 180 illustrated in FIG. 1.

Web applications running on web server 170 may access a database of webpages, distributable applications, and other electronic files containinginformation of various types. Web pages or other electronic files may beviewed on the displays of the user computers by a suitable applicationprogram residing on a user computer, such as a browser, or by adistributable application provided to a user computer by the web server170. It should be appreciated that many different user computers, manydifferent web servers, and many different application servers of varioustypes may be communicating with each other at the same time.

The present invention allows a user to organize and schedule mealpreparation. Users perform the methods of the present invention byinteracting with browsers on their user computers via web pages. Webpages are generally requested by communicating an HTTP request from abrowser application. The HTTP request includes the Uniform ResourceLocator (URL) of the desired web page, which may correspond to a webpage stored at a destination web site, such as web server 170. The HTTPrequest is routed to the web server 170 via the Internet 150. The webserver 170 then retrieves the requested web page, identified by a URL,from database 180 and communicates the web page across the Internet 150to the browser application running on user computers 110, 120, 130, or140. The web page may be communicated in the form of plural messagepackets as defined by standard protocols, such as the Transport ControlProtocol/Internet Protocol (TCP/IP), although it should be appreciatedthat communication using other protocols would be within the scope ofthe invention.

FIG. 2 is a simplified block diagram illustrating the internal softwarearchitecture of one embodiment of web server 170. Web server 170 may beimplemented using one of several standard hardware web server platformsincluding general purpose computers or specialized web server computersfrom any one of a number of manufacturers to include Hewlett Packard,Apple, Dell, IBM, or the like. These web server hardware platforms mayrun any one of a number of operating systems 230 to include MicrosoftWindows Server, Linux, or several other versions of Unix. Web Server 170may also be virtualized within a server virtualization system such asVMWare to enable multiple web servers or other applications to operateon one individual computer.

Running on these hardware and operating system web server platforms maybe software applications including what is known in the art as anapplication server 210. Applications servers may include Apache Tomcat,Websphere, or Jboss. Simplified web application architectures may alsobe used, to include http servers such as an Apache http server runningcgi scripts, or open source applications such as Drupal or Jumla.

As illustrated in FIG. 2, Application Server 210 running on web server170 interacts via a network port 250 with a network 150. Applicationserver 210 may receive requests from the network 150 generated by usercomputers of FIG. 1 over network port 250. Within Application server 210may be a web container containing one or more web application programsas described above. These applications may respond to the networkrequests generated by user computers to deliver web content back to usercomputers over network 150. These application programs may includeinstructions that configure a processor running in web server 170 toperform the methods of one or more operative embodiments describedherein.

Web server 170 also includes a file system 220. Application server 220may read and write data to file system 220 in order to respond torequests from user computers over network 150. File system 220 may storestatic files including html files that define one or more aspects of auser interface provided by Application Server 210 to user computers overnetwork 150. File system 220 may also store instructions of the webapplications described above that cause the processor running in webserver 170 to perform the method of one or more of the operativeembodiments described in this application.

FIG. 3 is a block diagram of an apparatus for managing and schedulingmeal preparation. The apparatus includes a recipe execution plangenerator 370, recipe data store 315, a search engine 335, chef and/ordiner profiles 305, and a network interface 345. The apparatus is incommunication with three users 360 over a wide area network (WAN) 350.The apparatus of FIG. 3 may be part of software and hardware on aweb-server 170 such as described above with reference to FIGS. 1 and 2.

Chef and/or diner profiles 305 (also referred to as “user profile(s)herein) may include data indicating one or more preferences, dietaryrestrictions, and/or allergies of a user, where the term “user” includesany one or more of the people associated with a meal such as the peoplethat will prepare the meal and the people that will eat the meal. Chefand/or diner profiles 305 may also include data indicating foodingredients or cooking tool inventories of a user. Examples of possiblecontent of such profiles are illustrated in FIGS. 4A-4C.

Users 360 interface with search engine 335 to search for recipes andreview search results. The search engine 335 searches the recipes datastore 315 for recipes that meet criteria specified by users 360 in thesearch requests, and may return the results to the user over the WAN350. For some searches, search engine 335 may also base the searchresults returned to the user on information in one or more chef and/ordiner profiles 305. For example, in an embodiment, a user with a dietaryrestriction that prevents the consumption of dairy products may performa search for Italian recipes. Some of the Italian recipes stored inrecipe data store 315 may include pasta dishes with a white sauce. Thewhite sauce may include dairy products. Search engine 335 may removethese recipes from the search results delivered to user 360 byconsulting the user's 360 dietary restrictions in the chef and/or dinerprofiles 305.

As described further below with reference to FIGS. 5A to 5C, someimplementations include an advantageous “meal centric” rather than“recipe centric” user interaction with the system. For example, the usermay perform a search using certain criteria such as cuisine type, andthe search results may return not just individual recipes, but completemeals comprising multiple individual dishes that satisfy the searchcriteria. As used herein, the term “meal” means a set of two or moredishes having separate recipes that are consumed at approximately thesame time. FIG. 5C described below illustrates one example userinterface for displaying and interacting with search results inaccordance with these principles. Although some features of the systemare associated specifically with designing and preparing meals, systemaspects described herein are generally applicable to preparation ofindividual recipes. Any discussion of meals and the like hereintherefore includes single recipes. Operational principles includedherein as applied to meals including multiple recipes will be explicitlystated and should not be inferred.

After search results are delivered to the user 360, the user may acceptone or more of the recipes included in the search results. Theacceptance of one or more recipes may be communicated to the recipeexecution plan generator 370. After the recipe execution plans aregenerated, they may be communicated back to user 360 over WAN 350. Therecipe execution plan generator 370 is discussed in more detail below.

FIG. 4A shows one embodiment of a user interface for viewing and editinga user profile. The user interface is divided into two main regions,with ingredients in the left region and dishes in the right region.Ingredients and dishes that are liked by the user Gianna are marked witha check mark. Ingredients and dishes that are disliked by Gianna aremarked with an “X.” In an embodiment, icons in either the ingredients ordishes regions of the user interface may be selected with a pointingdevice to toggle between like, dislike, or no indication. When a user issatisfied with how their likes and dislikes are recorded, they mayselect the “save” button on the top right to save the information to apersistent copy of their user profile.

FIG. 4B shows one embodiment of a user interface for editing additionalinformation in a user profile. This user interface is also divided intotwo regions. The left region allows a user to specify dietarypreferences. For example, Gianna has specified that she prefersGluten-Free, Low-Sodium, Heart Healthy, Low Cholesterol, and low fatfoods. Gianna does not necessarily prefer sugar free or dairy freefoods, for example. The right region of user interface 430 allows theuser to specify dietary preferences that may be expressed using multiplevalues or levels. For example, a user may specify whether they preferthe spiciness of their food to be mild, medium, or hot. When the user issatisfied with their selections, they may save the settings using thesave button in the upper right portion of the user interface.

FIG. 4C shows an embodiment of a user interface for editing additionalinformation in a user profile. The user interface of FIG. 4C allows auser to specify food allergies. By selecting one or more of the icons,allergies to particular food items may be specified. In an embodiment,selecting an already selected food item may deselect the food item. Oncethe user is satisfied with the selections displayed on the userinterface, they may save the information to a persistent copy of theiruser profile using the save button in the upper right portion of theuser interface.

FIG. 5A shows an embodiment of a user interface for displaying mealsuggestions retrieved during a search. The illustrated embodiment allowsa user to browse five selected categories of meals. The categories canalso be filtered using the filter drop down boxes as shown. In theillustrated embodiment, each of the five categories may be browsedvertically. Boxes with “X”s in them may be graphic or photographicillustrations, but these are not shown in these figures.

FIG. 5B shows another embodiment of a user interface for displaying mealsuggestions. In the illustrated embodiment, suggested meals are shownvertically. Information about each suggested meal is also displayed,such as the time required to prepare the meal, the skill level necessaryto prepare the meal, and a rating based on feedback of the recipe fromother users.

FIG. 5C shows an embodiment of a user interface for creating a mealcomprising multiple dishes. The user interface allows individual recipesfor one or more dishes to be combined into a meal. A set of dishesretrieved in a search may be positioned horizontally across the userinterface organized as a meal shown in FIG. 5C as entrée, side dish (1),side dish (2), and dessert. The results of the search may includemultiple results for each category of dish.

Using arrows 540, a user may vertically scroll through search resultchoices within each dish category independent of each other category.For example, the leftmost arrows 540 allow a user to scroll throughchoices for the entrée dish. The right most arrows allow a user toscroll through choices for a dessert dish. Search filters may at leastpartially determine the number of choices presented in each of theentrée, side dish, and dessert categories. The system may define adefault number of alternative dishes in each category that are availableto the user when using the vertical scroll arrows 540. In an embodiment,additional dishes may be added to the meal in addition to the onesshown. Dishes may also be deleted from the meal.

As choices for each dish in the meal are scrolled through, theillustrated embodiment may update the nutritional information 530, toolsneeded information 520, and ingredients needed information 510 based ona current set of displayed dishes in the meal. This is anotheradvantageous aspect of the meal-centric user interface provided in someembodiments. One or more, and preferably all of the informational itemspresented on this user interface such as nutritional information, toolsneeded, and ingredients needed relate to the entire meal including alldisplayed dishes, not merely one recipe for one dish. This removes theneed to separately peruse recipes that may include overlappingingredients or to add calories or other numbers from different recipes.Once the user is satisfied with the displayed meal, they may select thestart button 550 to begin the meal preparation process. At this point,the recipe execution plan generator 370 may create a recipe executionplan for the entire meal

FIG. 6 is a block diagram of a recipe execution plan generator 370. Therecipe execution plan generator 370 includes a scheduling module 372 andan execution plan output module 374. The scheduling module 372 receivesrecipe data from a recipe database, which may be recipe data store 315,illustrated in FIG. 3. Scheduling module 372 also receives an indicationof accepted/selected recipes, for example, from a user 360 asillustrated in FIG. 3. The scheduling module 372 may then determine aschedule for a meal based on at least the accepted recipes. For example,the scheduling module 372 may determine a combined preparation scheduleand instruction set for a first recipe and a second recipe included in ameal. The schedule for the first recipe may be affected by the schedulefor the second recipe, and the schedule for the second recipe may beaffected by the first recipe. Thus, the schedule for a set of steps toprepare a first recipe in a recipe execution plan may differ dependingon which second (or third, etc.) recipe is combined with the first in ameal.

After the schedule for the meal has been determined by scheduling module372, the meal schedule is provided to execution plan output module 374.The execution plan output module 374 then delivers data associated withthe execution plan to a user. For example, data associated with theexecution plan may be delivered to user 360 over WAN 350, as illustratedin FIG. 3.

FIG. 7 shows a flowchart of a method for preparing a meal that may beimplemented with the system of FIG. 3. Process 700 may be implemented byinstructions included in a web application running in application server210 illustrated in FIG. 2. Process 700 begins at start block 710 andthen moves to block 720 where input is received from a computer network.Process 700 then moves to block 730 where a first recipe is selectedbased on the input from the computer network. Process 700 then moves toblock 740 where a second input is received from the computer network.Process 700 then moves to block 750 where a second recipe is selectedbased on the second input. Process 700 then moves to block 760 where theselections are stored to an electronic memory. While process 700 isillustrated as receiving two separate inputs from the network andselecting a corresponding first recipe and second recipe based on thosetwo network inputs, one with skill in the art would recognize variationsin this method. For example, both the first recipe and the second recipemay be selected based on a single input from the network. Similarly,while block 760 indicates that the selection of the first recipe and thesecond recipe are both stored as one operation, storing of the selectionof the first recipe to a computer memory may be performed independentlyof the storing of the selection of the second recipe to a computermemory. After the selections are stored to an electronic memory, process700 moves to block 770 where the first recipe and the second recipe areassociated as a meal. Process 700 then moves to block 780 where anexecution plan for preparing the meal is delivered. In an embodiment,the execution plan for preparing the meal may be delivered across anetwork to a user. In an embodiment, the execution plan may be displayedin a user interface, for example, in a web browser, after it isdelivered to the user. Process 700 then moves to end state 790.

As noted above, the scheduling module 372 can aggregate schedulinginformation across recipes to create a schedule for an entire meal. Thesystem can also receive a meal serving time from a user. Once all of theindividual recipes for a particular meal have been selected, each stepof a meal preparation can be scheduled so that all of the individualmeal items are ready to be served at the meal serving time. For example,if homemade bread is to be served at 6 pm, the system can instruct thefood preparer to begin mixing the dough at 1 PM, to ensure adequate timefor the bread to rise and complete its baking cycle.

Other powerful scheduling capabilities are possible. For example,conflicts between individual recipes may be identified. Defaultscheduling of two recipes may require the chef to mix the bread batterand tenderize the meat at the same time. Since the system recognizes themultiple recipes as parts of a single meal, it can recognize thisconflict and adjust the default scheduling based on the resourcesavailable. Kitchen supplies can be considered resources. For example, afood preparer may record their inventory of kitchen supplies as part oftheir user profile and the execution plan generator may have access tothis information. If two individual recipes both require use of the ovenat a certain temperature, the system may modify the default schedule ofone or both items to eliminate double tasking of the oven resource,while preserving the meal serving time and maintaining food quality.

Properly deconstructed recipes allow time variables to be associatedwith any action, ingredient, container or utensil. For instance, theamount of time needed to make a chicken stock as opposed to buying a canof pre-made stock. Or the difference in heating times of an aluminumskillet versus a copper skillet. Actions can have variable timecomponents as well like the amount of time required to knead dough byhand as opposed to using an electric mixer. Geolocation informationabout the user can provide data on how long it takes water to boil orhow long something should be cooked. All of this data may be used by thescheduling module 372 to make adjustments to the delivered recipeexecution plan.

With individual recipes in a uniform format, the system can makedecisions on how to order steps along a linear time line. Redundancy maybe reduced by combining ingredients shared between recipes into onepreparation step. The scheduling module 372 may calculate a uniformserving time by employing temporal logic on each of the deconstructedcomponents within a recipe. Each step within a recipe can have anassociated time value, based on the deconstructed attributes and actionswithin it. Therefore, the total time required for each recipe will bethe sum of each of its steps. The recipe with the longest cook time mayserve as the yardstick for when the steps within other recipes should beaddressed.

Meals that require more than one person can be broken into individualtask timelines. This is especially important for larger special occasionmeals or event catering. In some implementations, the system may assessthe abilities of each person involved and take inventory of the toolsand kitchen appliances available. Using this data along with temporallogic, the scheduling module 372 can intelligently plan the process toensure that all the recipes are synchronized and ready at the same time.

FIG. 8 is an embodiment of a user interface for a meal overview. Thisuser interface may form a summary of the recipe execution plan createdby the scheduling module 372, and may be delivered by the recipeexecution plan generator 370 after the user clicks on the Start button550 shown in FIG. 5C for example. This user interface displays aningredient inventory 830, a meal schedule overview 820, and a start cookmode button 860. The ingredient inventory 830 includes icons thatprovide a status for each ingredient needed for the meal. For example,the meal shown in the user interface includes at least mushrooms,onions, carrots, and tomatoes. As shown, the meal ingredients with acheck mark, such as carrots 840, are recorded as present in a currentfood inventory. Some meal ingredients may have coupons available, asindicated by notification bubble 850. Selecting the notification 850 mayallow a user to print a coupon that may be used to receive a discount onthe cost of the ingredient.

In some embodiments, these coupons may be based on the geographiclocation of the user preparing the meal, or the user responsible forshopping for the meal. The geographic location of the user preparing themeal and/or the user responsible for shopping may be manuallyconfigured, for example, by inputting an address or a zip code via auser interface. In another embodiment, the geographic location may beautomatically determined using geolocation features. For example, somemobile devices allow applications running on the mobile device todetermine a geolocation. A meal preparation application running on amobile device may determine the geolocation of the user via thesegeolocation features.

The meal schedule summary 820 displays a summary of events associatedwith preparation of the meal. Major events in the meal preparation areillustrated as triangles below the timeline in the meal schedulesummary. Explanations of the major events in the meal preparation asdescribed below the meal schedule summary. When a user is ready to beingthe food preparation process, they may select the start cook mode button860. When this button is pressed, a series of detailed instructions maybe sequentially presented to the user by the recipe execution plangenerator 370 to walk them through the combined meal preparation processincluding multiple dishes.

In this “Cook Mode,” the steps may be clearly written and displayed onthe device, whether it's a computer, tablet or smart phone. Hands freeoperation can allow the cook to give an audio command for the next stepto be displayed. A cook may work on a series of steps for one recipebefore being directed to work on another series of steps for anotherrecipe. The cook may be offered a choice to prepare tasks ahead of time,such as marinades, dry rubs or refrigerated items. These completed stepscan be removed from the process and the timeline can be recalculated bythe scheduling module 372 in response to such selections by the user.

The Cook Mode may also utilize passive timers, active timers and buffertimers to make decisions on which steps should take priority. Passivetimers do not require the cook's full attention like baking an item inthe oven. Active timers require a cook's full attention like activelystirring or kneading. Buffer timers allow flexibility within thetimeline by allowing the user to take a break on the current recipe andaddress another.

While a cook is engaged in Cook Mode, behind-the-scene clock can keeptrack of how long it takes the user to move from one step to the next.Since each step has a pre-defined average time value, these can becross-referenced with the user's actual experience to make more accuratetime calculations for future recipes. For instance, if a recipe has atotal cook time of 30 minutes but the cook completes it in 45 minutes,the system can identify which steps took longer and provide options forproducts or services to improve efficiency. This information can bestored and accessed to customize delivered execution plans.

Additional enhancements to the personalization of the system for eachuser can be further provided. For example, although systems have beenproposed that perform recipe database searches based on user profileinformation such as food likes, dislikes, allergies, etc., no system hasbeen contemplated where individual recipes from a database arepersonalized according to information from a user profile. FIGS. 9through 15 illustrate systems with this capability.

FIG. 9 is a block diagram of an apparatus for managing and schedulingmeal preparation. The apparatus includes a network interface 945, searchengine 935, recipe data store 915, recipe execution plan generator 970,a substitutions data store 910, and chef and/or diner profiles 905.Search engine 935 and recipe execution plan generator 970 may includeinstructions that configure a digital electronic processor to performfunctions of the apparatus. The apparatus is in communication with users960 over WAN 950. Similar to the apparatus as described with referenceto FIG. 3, a user may search for recipes using search engine 935.Similar to search engine 335, search engine 935 may communicate one ormore recipes to a user 960 based, at least in part, on search filtersspecified by the user and/or on some data included in chef and/or dinerprofiles 905. The user 960 may then accept one or more of these recipes.Accepted recipes are communicated to execution plan generator 970.

The search engine 935 may present (e.g. on the user interface of FIG.5C) a set of recipes to user 960 that may be inconsistent with someaspects of information in the profiles, such as dietary preferences,available tools, preferences, and the like. In an embodiment, the recipeexecution plan generator 970 may determine one or more inconsistenciesbetween one or more recipes in the set of recipes and criteria definedby chef and/or diner profiles 905.

In an embodiment, data associated with the search results, for example,recipe data, and data associated with inconsistencies as discussedabove, may be delivered to the user 960 over WAN 950 by the searchengine 935. In an embodiment, the recipe execution plan generator 970may further identify possible substitutions from substitutions datastore 910 that may resolve at least some of the inconsistenciesdiscussed above. In an embodiment, data associated with the identifiedsubstitutions may also be delivered to the user 960 over WAN 950. In anembodiment, the data associated with the substitutions and the dataassociated with the set of recipes may be delivered at substantially thesame time.

For example, a user may have a dairy dietary restriction, but a recipein the set of recipes may include a dairy ingredient. The system mayidentify this inconsistency, and also identify that the dairy ingredientin the recipe may be substituted with a non-dairy ingredient, such as asoy based ingredient. Data associated with the possible substitution maybe communicated to user 960, along with data associated with the recipethat includes the dairy inconsistency.

In an embodiment, the substitutions delivered to the user 960 may bedisplayed in a user interface, for example, a web browser based userinterface. The user may then accept one or more of the suggestedsubstitutions via the user interface. After the substitutions areaccepted by the user, they may be communicated to the recipe executionplan generator 970. Accepted substitutions may also be added to the chefand/or diner profiles 905. For example, in an embodiment, an indicatorof a customized recipe including one or more accepted substitutions maybe stored in a “My Recipes” folder included in the chef and/or dinerprofiles 905.

FIG. 10 is a block diagram of one embodiment of a recipe execution plangenerator 970, as illustrated in FIG. 9 that incorporates thisfunctionality. Recipe execution plan generator 970 includes a recipecustomization module 974, consistency check module 972, a schedulingmodule 976, and a substitution suggestion and execution plan outputmodule 978.

The consistency check module 972 compares inputs associated withaccepted recipes with profile data. The profile data may be chef and/ordiner profile data, such as item 905 illustrated in FIG. 9. Based on thecomparison, consistency check module 972 may identify inconsistenciesbetween the accepted recipes and the profile data. The identifiedinconsistencies may be communicated to the substitution suggestion andexecution plan output module 978.

The substitution suggestion and execution plan output module 978 maycommunicate possible substitutions to the user based on input from theconsistency check module 972. For example, if the consistency checkmodule 972 identifies that a recipe calls for use of a dairy ingredient,but the profile data indicates that dairy is restricted for the user,the substitution suggestion and execution plan module 978 may suggestuse of a soy based ingredient to the user. If the user accepts thissubstitution, the acceptance will be communicated to recipecustomization module 974.

The recipe customization module 974 receives input from a substitutiondatabase and a recipe database. The recipe customization module alsoreceives as input accepted substitutions. Recipe customization module974 may incorporate one or more accepted substitutions into one or morerecipes in the recipe database. Once one or more substitutions have beenapplied to a recipe, the customized recipe is communicated to thescheduling module 976. The scheduling module 976 builds a schedule forpreparing the customized recipe generated by recipe customization module974. The schedule prepared by the scheduling module 976 may beconsidered an execution plan. The execution plan is then communicated tothe substitution suggestion and execution plan output module 978.

The substitution suggestion and execution plan output module 978 thendelivers the execution plan to the user. In an embodiment, the executionplan may be delivered to the user over a wide area network, such as theInternet.

FIG. 11 shows one embodiment of a user interface for a meal overviewpage. The user interface shown in FIG. 11 is similar to the userinterface discussed with respect to FIG. 8. The user interface of FIG.11 differs from the user interface of FIG. 8 in that the ingredient listshows an ingredient that includes a substitution bubble 1120. Thesubstitution bubble 1120 indicates that a substitution may be availablefor the ingredient. The user interface of FIG. 11 may be implemented inconjunction with the embodiment shown in FIG. 9. In this implementation,a user may select a meal using the interface of FIG. 5C. The recipeexecution plan generator 970 may prepare the summary interface, asdescribed above with reference to FIG. 8, but this time includinginformation about suggested substitutions related to inconsistencieswith user profile data. If substitutions are accepted, this iscommunicated to the recipe execution plan generator, which then adjuststhe recipe execution plan, including any dependent timing changes, inaccordance with the substitution, and returns the adjusted executionplan to the user.

FIG. 12 is a flowchart of one implementation of a method for managing arecipe over a computer network. In an embodiment, process 1200 may beperformed by the apparatus shown in FIG. 9. The flowchart begins atblock 1210, where a first recipe selection based at least in part oninput received from a user over a computer network is received. In anembodiment, a user may interact with a computer user interface, such asa browser user interface, to select a recipe. In an embodiment,selection of the recipe by the user may be transmitted across thecomputer network to a network server. In an embodiment, the server maybe performing process 1200, and may then receive the recipe selection.

In block 1215, data associated with the selected recipe is retrieved inresponse to the selection. The data may include food ingredients andactions associated with preparation and/or cooking of ingredients. Thefood ingredients may have associated with them one or morecharacteristics. For example, the characteristics associated with thefood ingredients may include dairy, gluten, nut, wheat or othercharacteristics.

In an embodiment, the recipe actions may include a tuple associating anaction with one or more of the recipe's ingredients. In an embodiment, arecipe action may specify an action be performed on one or moreingredients of a recipe. For example, a recipe action may specify thatan onion be chopped. Alternatively, a recipe action may indicate thatbutter and milk be mixed.

In block 1220, data associated with a user profile is retrieved. In anembodiment, the data associated with the user profile may define one ormore characteristics of the user. As described above, the user profilemay define food restrictions or food preferences of the user. Forexample, some users may be allergic to or prefer not to consume foodsthat include for example, one or more of meat, fish, daily products suchas milk or butter, wheat, gluten, nuts, or other types of food items.Some embodiments may store information indicating these preferences orallergies in the user profile.

In an embodiment, data associated with the user profile may alsoindicate cooking equipment available to the user. For example, the userprofile may indicate whether the user has access to a food processor,oven, microwave, mixer, grinder, or the like. In an embodiment, theprofile may indicate how many ovens the user has access to, and whateach oven's capacities and capabilities are.

In block 1225, the data associated with the recipe is compared with thedata associated with the user profile. Inconsistencies may be detected.For example, inconsistencies between one or more recipe inputs or recipeactions and the user profile may be detected. For example, the recipemay specify a first, second, and third ingredient having one or morecharacteristics. For example, in an embodiment, the first ingredient maybe classified as a dairy ingredient, while the second ingredient isclassified as a nut ingredient.

In an embodiment, the user profile or user characteristics indicated bythe user profile may be inconsistent with these project inputs. Forexample, the user profile may specify that the user is allergic to ordoes not like to consume dairy food items. This inconsistency isdetected in block 1225. The user profile may also indicate the user isallergic to nuts. This inconsistency with the second ingredient may alsobe identified in block 1225.

In block 1230, data associated the recipe and the data associated withinconsistencies identified during the comparing are delivered to theuser over a computer network. In an embodiment, delivering the data tothe user over a computer network may include displaying the data to theuser on an electronic display.

In some embodiments, process 1200 may also generate one or morealternative recipe ingredients or recipe actions based on the identifiedinconsistencies. In an embodiment, the alternative recipe ingredients oractions, if incorporated into the recipe, may reduce or eliminate anumber of inconsistencies identified between the user profile and therecipe. The alternative recipe ingredients or actions may indicate oneor more existing recipe ingredients or actions be removed from theproject if the alternative recipe ingredients or actions areincorporated into the recipe.

For example, in the embodiment discussed above, if a recipe includes adairy ingredient and the user profile indicates the user is allergic todairy items, an alternative recipe consisting of a soy-based ingredientmay be generated.

One or more alternative recipe ingredients or actions may be generatedby process 1200, for example, in block 1225. In an embodiment, a list ofalternative recipe ingredients or actions may also be delivered to theuser over a computer network, for example, in block 1230. In someembodiments, the data associated with alternative recipe ingredients oractions that are consistent with the user profile, the data associatedwith recipe ingredients and/or actions, and the data associated withinconsistencies identified in block 1225 may be delivered atsubstantially the same time to the user.

In some embodiments, after data is delivered to the user over a computernetwork, a selection of one or more alternative recipe ingredients oractions may be received over the computer network. In one example, thedata delivered to the user over the computer network may be formatted onan electronic display, with appropriate user interfaces to allow theuser to select if any of the alternatives presented to them areacceptable. In response, the user may select none, one, or more of thedelivered alternatives via the user interface on the electronic display.

The selection by the user may be indicated in network communicationbetween the user and a computer performing process 1200. In anembodiment, one or more alternative recipe ingredients or recipe actionsmay be incorporated into the recipe in response to the selection of oneor more alternative recipe inputs and/or actions. Incorporation into therecipe may include deleting one or more ingredients or actionsdetermined to be inconsistent with the user profile. Incorporation mayalso include substituting one or more of the alternative ingredients oractions for one or more ingredients or actions determined to beinconsistent with the user profile.

For example, a recipe may include milk as an ingredient. The user mayalso be presented with data indicating that soy milk may be substitutedfor the milk such that the recipe is consistent with preferencesindicated by the user profile. In an embodiment, the user may also bepresented with data indicating that rice milk may be substituted formilk in the recipe. The substitution of soy milk and the substitution ofrice milk are alternative recipe ingredients in this example. The usermay select the rice milk substitution. The selection by the user mayresult in reception of a selection of one of the alternative recipeingredients and/or recipe actions (rice milk) from the user over thecomputer network.

In an embodiment, selection of an alternative recipe ingredient such asselecting rice milk in a recipe specifying cow's milk, may also causeadjustments to other project inputs or actions. For example, differentmixing or baking times or baking temperatures may be appropriate whenrice milk is used as an ingredient as compared to when cow's milk isused. Therefore, one or more recipe actions may be modified in responseto receiving a selection of an alternative ingredient.

As another example, in the same food preparation embodiment, one actionin the recipe may indicate that a flour ingredient should be sifted. Theuser's profile may indicate that the user does not have access to asifter. An alternative food preparation step may be generated, whichsubstitutes an action of sifting the flour. For example, an alternativeaction to whisk the flour may be generated. Another alternative actionto mix the flour with a food processor may also be generated. These twoalternative actions may be delivered to the user over a computernetwork. In response, the user may select an alternative action, forexample, that they will mix the flour in a food processor. As a resultof the user making a selection, a selection of one or more alternativerecipe ingredients and/or recipe actions will be received over thecomputer network. In response to receiving the selection, thealternative action is incorporated into the project. For example,sifting the flour is removed from the recipe and mixing the flour with afood processor is inserted into the recipe.

In an embodiment, in response to the selection of one or morealternative recipe ingredients or recipe actions, data indicating asecond recipe may be delivered to the user over a computer network. Inan embodiment, the second recipe may be based on the first recipe. In anembodiment, the second recipe may include the selected alternativeingredients or actions, and not include ingredients or actions includedin the first recipe that were replaced by the alternative recipeingredients or actions. In an embodiment, the second recipe may not bebased on the first recipe. For example, based on selections receivedfrom a user, process 1200 may determine that the second recipe may bepreferred by the user over the first recipe or the first recipe with theselected alternative ingredients or actions applied.

In some embodiments, a modified version of a recipe may be stored inresponse to the selection of an alternative recipe ingredient or action.In other embodiments, meta-data indicating the first recipe and selectedalternative ingredients or actions may be stored. The modified recipemay then be recreated dynamically based on the meta-data. In anembodiment, the modified recipe may be associated with the user. Forexample, in the food preparation embodiment, the modified recipe may beassociated with the user's “my recipes” feature. The modified recipe maybe stored, or meta-data indicating the original recipe, along withselected alternative ingredients or preparation steps may be stored.

In an embodiment, a shopping list may be generated based on the modifiedrecipe. The modified shopping list may be generated in response to theselection of one or more alternative ingredients for the recipe.

In an embodiment, inconsistencies may be determined in block 1225 basedon a skill level indicated by the user profile. For example, dataassociated with a recipe may indicate a skill or skill level necessaryto successfully prepare the recipe or a portion of the recipe. The userprofile may indicate a user's skill level. For example, the user profilemay indicate a relative skill level such as novice, intermediate,advanced, or expert. Similarly, a recipe may specify a minimum skilllevel necessary to prepare the recipe. In an embodiment, if the user'sskill level indicated by the user profile is below the skill levelindicated in the recipe, the inconsistency may be identified.

In some embodiments, multiple specific cooking skills may be indicatedin the user profile. For example, the user profile may indicate cookingskills including knife skills, flambéing, caramelizing, and sautéing.Similarly, a recipe may specify one or more specific cooking skillsnecessary to prepare the recipe. If a skill is indicated by the recipebut not indicated by the user profile, this may be detected as aninconsistency in block 1225.

In an embodiment, substitutions may be determined based on the skillinconsistencies. In an embodiment, these substitutions may be suggestedto the user. If the user accepts one or more of the substitutions, theymay be incorporated into the recipe. In another embodiment, portions ofa recipe requiring skills inconsistent with a user profile may beautomatically modified to change or eliminate the skill requirements.For example, if a recipe includes caramelizing sugar, but the userprofile does not include a caramelizing skill, a substitution may begenerated that specifies that turbinado sugar be used. If thissubstitution is accepted by the user, the inconsistency associated withthe caramelizing skill may be eliminated.

How the skills or skill levels indicated in the user profile aredetermined may vary by embodiment. In one embodiment, the user maymanually configure their skill level in the user profile. For example, auser interface may be presented to the user that allows them to indicatetheir skill level or skills in the user profile. In another embodiment,at least some of a user's skills or skill levels may be determinedautomatically. In one embodiment, inputs generated by a user may berecorded to facilitate automatic determination of a user's skills orskill level.

The inputs may then be analyzed to determine user skills or skill level.For example, the time a user takes to perform a task associated withfood preparation may be compared to an average time for other users toperform the same or a similar task. The user's skill level may then bebased on a comparison of the time needed by the user and the averagetime of other users. In some embodiments, the time a user takes toperform a task may be averaged over several tasks, with this averagecompared to the average of other users. If a user improves their skillsover time, the time the user consumes to complete one or more tasks maybe reduced. This may change the comparison of the user's time to thetime required by other users, resulting in a corresponding change in theuser's determined skill level. A schedule for meal preparation may alsobe adjusted based on a comparison of a user's time to perform one ormore tasks and other user's average time to perform those tasks.

FIG. 13 is a block diagram of an apparatus for managing and schedulingmeal preparation. The apparatus of FIG. 13 is similar to the apparatusillustrated in FIG. 9. However, in the apparatus of FIG. 13, dataassociated with substitutions generated based on information in the chefand/or diner profiles 1305 may not be delivered to the user 1360.Instead, search engine 1335 may automatically or without user inputincorporate substitutions into a recipe. The substitutions may bedetermined based on inconsistencies detected between the chef and/ordiner profile data 1305 and recipes identified from recipe data store1315. The substitutions may also be determined based on inconsistenciesdetected between recipes in recipe data store 1315 and search criteriaspecified by user 1360 in a search request to search engine 1335.Because the substitutions are not presented to the user in theembodiment illustrated in FIG. 13, accepted substitutions are notprovided by the user 1360 to the recipe execution plan generator 1370,as are provided to the embodiment of recipe execution plan generator970, illustrated in FIG. 9.

FIG. 14 is a block diagram of one embodiment of a recipe execution plangenerator. The embodiment illustrated in FIG. 14 corresponds to recipeexecution plan generator 1370, illustrated in FIG. 13. The recipeexecution plan generator 1370 is similar to recipe execution plangenerator 970, illustrated in FIG. 10. The recipe execution plangenerator 1370 differs in that inconsistencies identified by theconsistency check module 1372 are not delivered to a user. Instead, theinconsistencies are provided to the recipe customization module 1374.The recipe customization module 1374 generates data indicating a recipefrom a recipe database that include determined substitutions from thesubstation database. This data is communicated to the scheduling module,which generates a schedule for the recipe including the substitutions.An execution plan based on the recipe including the substitutions isthen communicated to the execution plan output module 1378, whichdelivers the execution plan to the user.

FIG. 15 is a flowchart of a method of managing a recipe. In anembodiment, process 1500 may be implemented in the apparatus illustratedin FIG. 9. In block 1505, a recipe selection based at least in part oninput received from a user over a computer network is received. In block1510, data associated with the selected recipe is retrieved in responseto the selection. In an embodiment, the data may be retrieved from arecipe data store, such as recipe data store 1315 illustrated in FIG.13. In block 1515, data associated with a user profile is retrieved. Thedata associated with a user profile may be retrieved from a chef and/ordiner profile 1305, as illustrated in FIG. 13.

In block 1520, the data associated with the recipe is compared to thedata associated with the user profile to detect one or moreinconsistencies. As discussed with respect to FIG. 12, in an embodiment,the inconsistencies may relate to the user's food preferences, dietaryrestrictions, kitchen tools and supplies inventory, or cooking skills.As described with respect to FIG. 12, skill levels of a user may bemanually configured or automatically determined. These skill levels maybe compared to skills indicated in the recipe to determine one or moreinconsistencies.

In block 1525, one or more substitutions are determined based on thedetected inconsistencies. As discussed with respect to FIG. 12, thesubstitutions may substitute one ingredient for another ingredient inthe recipe. For example, soy milk may be substituted for cow's milkbased on a dietary restriction indicated by the user profile that theuser should not consume dairy products. Substitutions for actionsdefined as part of the recipe may also be determined in block 1525. Forexample, as discussed above, a recipe may indicate that flour should besifted, while the user profile data may indicate that the user does notown a sifter. This inconsistency may be detected in block 1520. Asubstitution determined in block 1525 may be to use a food processor onthe flour instead of a sifter.

In block 1530, data associated with the recipe including the determinedsubstitutions is delivered to the user over a computer network. In anembodiment, a modified recipe may be generated that includes thesubstitutions determined in block 1525. Data associated with themodified recipe may be delivered to the user. In an embodiment,delivering to the user may comprise sending the data over a network to adestination address associated with the user. In another embodiment, amodified recipe may not be generated. Instead, meta-data associating therecipe selected in block 1505 and the substitutions determined in block1525 may be generated. Data associated with this meta-data may bedelivered to the user in block 1530. In another embodiment, dataindicating the recipe selected in block 1505 and the substitutions maybe delivered to the user in block 1530. In this embodiment, a programrunning on a client computer may then display a modified recipe to theuser based on the delivered substitutions and selected recipe.

In some embodiments, the system may operate in accordance with FIGS. 9through 12, and if a user accepts a particular substitution, the systemcould thereafter make that substitution in all future interactions asdescribed with respect to FIGS. 13 through 15.

It will be appreciated that the systems and methods described herein maybe applied to environments other than cooking. Any project having inputsand actions analogous to a recipe having ingredients and cookingactivities can be managed in accordance with the above. Suchenvironments may include construction or home improvement projects forexample. Such a project may have a standard plan that includes tools theuser does not have access to. Substitutions can be identified and usedto create modified project plan incorporating the substitutions asdescribed above.

Headings are included herein for reference and to aid in locatingvarious sections. These headings are not intended to limit the scope ofthe concepts described with respect thereto. Such concepts may haveapplicability throughout the entire specification.

While illustrative embodiments have been disclosed and discussed, oneskilled in the relevant art will appreciate that additional oralternative embodiments may be implemented within the spirit and scopeof the present disclosure. Additionally, although many embodiments havebeen indicated as illustrative, one skilled in the relevant art willappreciate that the illustrative embodiments do not need to be combinedor implemented together. As such, some illustrative embodiments do notneed to be utilized or implemented in accordance with the scope ofvariations to the present disclosure.

Conditional language, such as, among others, “can,” “could,” “might,” or“may,” unless specifically stated otherwise, or otherwise understoodwithin the context as used, is generally intended to convey that certainembodiments include, while other embodiments do not include, certainfeatures, elements or steps. Thus, such conditional language is notgenerally intended to imply that features, elements or steps are in anyway required for one or more embodiments or that one or more embodimentsnecessarily include logic for deciding, with or without user input orprompting, whether these features, elements or steps are included or areto be performed in any particular embodiment. Moreover, unlessspecifically stated otherwise, or otherwise understood within thecontext as used, is generally intended to convey utilization of theconjunction “or” in enumerating a list of elements does not limit theselection of only a single element and can include the combination oftwo or more elements.

Any process descriptions, elements, or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode which include one or more executable instructions for implementingspecific logical functions or steps in the process. Alternateimplementations are included within the scope of the embodimentsdescribed herein in which elements or functions may be deleted, executedout of order from that shown or discussed, including substantiallyconcurrently or in reverse order, depending on the functionalityinvolved, as would be understood by those skilled in the art. It willfurther be appreciated that the data and/or components described abovemay be stored on a computer-readable medium and loaded into memory ofthe computing device using a drive mechanism associated with acomputer-readable medium storing the computer executable components,such as a CD-ROM, DVD-ROM, or network interface. Further, the componentand/or data can be included in a single device or distributed in anymanner. Accordingly, general purpose computing devices may be configuredto implement the processes, algorithms and methodology of the presentdisclosure with the processing and/or execution of the various dataand/or components described above. Alternatively, some or all of themethods described herein may alternatively be embodied in specializedcomputer hardware. In addition, the components referred to herein may beimplemented in hardware, software, firmware or a combination thereof.

Having thus described a preferred embodiment of a method and system fororganizing and scheduling meals over a network, it should be apparent tothose skilled in the art that certain advantages of the disclosed methodand system have been achieved. It should also be appreciated thatvarious modifications, adaptations, and alternative embodiments thereofmay be made within the scope and spirit of the present invention. Theinvention is further defined by the following claims.

1. A computer implemented method of managing a project, comprising:receiving a project selection based at least in part on input receivedfrom a user over a computer network; retrieving data associated with aninitial project execution plan corresponding to the selected projectcomprising project inputs and/or project actions from a digitalelectronic memory in response to the selection; retrieving dataassociated with a user profile from a digital electronic memory;comparing, in a digital electronic processor, the data associated withproject inputs and/or project actions with the data associated with theuser profile to detect inconsistencies between one or more projectinputs and/or project actions and the user profile; identifying, in adigital electronic processor, one or more alternative project inputsand/or project actions that reduce the detected inconsistencies;generating, with a digital electronic processor, a modified projectexecution plan incorporating the one or more alternative project inputsand/or project actions; and delivering the modified project executionplan to the user over a computer network.
 2. The method of claim 1,comprising delivering data associated with project inputs and/or projectactions and data associated with inconsistencies identified during thecomparing to the user over a computer network.
 3. The method of claim 2,further comprising delivering data associated with alternative projectinputs and/or project actions that are consistent with the user profilefor substitution into the project for project inputs and/or projectactions that are inconsistent with the user profile over a computernetwork.
 4. The method of claim 3, further comprising delivering thedata associated with project inputs and/or project actions, the dataassociated with inconsistencies identified during the comparing, and thedata associated with alternative project inputs and/or project actionsthat are consistent with the user profile at substantially the sametime.
 5. The method of claim 4, further comprising receiving a selectionof one or more alternative project inputs and/or project actions fromthe user over a computer network.
 6. The method of claim 5, furthercomprising incorporating the one or more alternative project inputsand/or project actions into the project in response to the selection ofone or more alternative project inputs and or project actions.
 7. Themethod of claim 5, further comprising delivering data associated with adifferent project in response to the selection of one or morealternative project inputs and or project actions.
 8. The method ofclaim 6, further comprising modifying a project action in response toreceiving a selection of an alternative project input.
 9. The method ofclaim 6, further comprising storing the project in a modified formincorporating the one or more alternative project inputs and/or projectactions into the project and associating the modified project with theuser.
 10. The method of claim 1, wherein the project comprises a recipefor preparing a meal or part thereof, wherein the project inputscomprise food ingredients, and wherein the project actions comprisepreparation and/or cooking of food items.
 11. The method of claim 10,wherein the user profile comprises data associated with one or more offood allergies of the user, food preferences of the user, cooking skillsof the user, and cooking equipment available to the user.
 12. The methodof claim 10, further comprising delivering data associated withalternative ingredients that are consistent with the user profile forsubstitution into the recipe for ingredients that are inconsistent withthe user profile.
 13. The method of claim 12, further comprisingreceiving a selection of one or more alternative ingredients from theuser over a computer network.
 14. The method of claim 13, furthercomprising incorporating the one or more alternative ingredients intothe recipe.
 15. The method of claim 14, further comprising storing therecipe in a modified form incorporating the one or more alternativeingredients and associating the stored modified recipe with the user.16. The method of claim 13, further comprising: storing a shopping listassociated with the user; and modifying the shopping list in response tothe selection of one or more alternative ingredients.
 17. The method ofclaim 1, wherein the delivering comprises displaying.
 18. An apparatusfor managing a project, comprising: a processor; and a memory operablyconnected to the processor, and storing instructions defining: anexecution plan generator, configured to receive a project selectionbased at least in part on input received from a user over a computernetwork; a consistency checker, configured to retrieve data associatedwith project inputs and/or project actions in response to the selection,and retrieve data associated with a user profile, and compare the dataassociated with project inputs and/or project actions with the dataassociated with the user profile to detect inconsistencies between oneor more project inputs and/or project actions and the user profile. 19.The apparatus of claim 18, further comprising a data delivery moduleconfigured to deliver the data associated with project inputs and/orproject actions and the data associated with inconsistencies identifiedduring the comparing to a user over a computer network.
 20. Theapparatus of claim 18, wherein the data delivery module is furtherconfigured to deliver data associated with alternative project inputsand/or project actions that are consistent with the user profile forsubstitution into the project for project inputs and/or project actionsthat are inconsistent with the user profile.
 21. The apparatus of claim20, wherein the data delivery module is further configured to deliverdata associated with project inputs and/or project actions, the dataassociated with inconsistencies identified during the comparing, and thedata associated with alternative project inputs and/or project actionsthat are consistent with the user profile at substantially the sametime.
 22. The apparatus of claim 21, wherein the execution plangenerator is further configured to receive a selection of one or morealternative project inputs and/or project actions from the user over acomputer network.
 23. The apparatus of claim 22, wherein the memory isfurther configured to store a project customization module, configuredto incorporate the one or more alternative project inputs and/or projectactions into the project in response to the selection of one or morealternative project inputs and or project actions.
 24. The apparatus ofclaim 22, wherein the data delivery module is further configured todeliver data associated with a different project in response to theselection of one or more alternative project inputs and or projectactions.
 25. The apparatus of claim 23, wherein the projectcustomization module is further configured to modify a project action inresponse to receiving a selection of an alternative project input. 26.The apparatus of claim 23, wherein the project customization module isfurther configured to store the project in a modified form incorporatingthe one or more alternative project inputs and/or project actions intothe project and associating the modified project with the user.
 27. Theapparatus of claim 18, wherein the project comprises a recipe forpreparing a meal or part thereof, wherein the project inputs comprisefood ingredients, and wherein the project actions comprise preparationand/or cooking of food items.
 28. The apparatus of claim 27, wherein theuser profile comprises data associated with one or more of foodallergies of the user, food preferences of the user, cooking skills ofthe user, and cooking equipment available to the user.
 29. The apparatusof claim 27, wherein the data delivery module is further configured todeliver data associated with alternative ingredients that are consistentwith the user profile for substitution into the recipe for ingredientsthat are inconsistent with the user profile.
 30. The apparatus of claim29, wherein the execution plan generator module is further configured toreceive a selection of one or more alternative ingredients from the userover a computer network.
 31. The apparatus of claim 30, wherein thememory is further configured to store a project customization module,configured to incorporate the one or more alternative ingredients intothe recipe.
 32. The apparatus of claim 31, wherein the projectcustomization module is further configured to store an indication of amodified recipe incorporating the one or more alternative ingredientsand associating the stored indication with the user.
 33. The apparatusof claim 30, comprising: means for storing a shopping list associatedwith the user; and means for modifying the shopping list in response tothe selection of one or more alternative ingredients.
 34. The apparatusof claim 18, wherein the delivering comprises displaying.
 35. Anapparatus for managing a project, comprising: means for receiving aproject selection based at least in part on input received from a userover a computer network; means for retrieving data associated withproject inputs and/or project actions in response to the selection;means for retrieving data associated with a user profile; means forcomparing the data associated with project inputs and/or project actionswith the data associated with the user profile to detect inconsistenciesbetween one or more project inputs and/or project actions and the userprofile; means for identifying one or more alternative project inputsand/or project actions that reduce the detected inconsistencies; meansfor generating a modified project execution plan incorporating the oneor more alternative project inputs and/or project actions; and, meansfor delivering the modified project execution plan to the user over acomputer network. 36-70. (canceled)